//-----------------------------------------------------------------------------
// File: util_vector.h
//
// Desc: vector class.
//       build20070218
//
// Author: Silva Lam
//-----------------------------------------------------------------------------
#ifndef _UTIL_VECTOR_H_
#define _UTIL_VECTOR_H_
#include "xtypes.h"
#include "xaux.h"
#include "xmath.h"
#include "util_datadef.h"

vector3_t xGenVector3(float_t x, float_t y, float_t z);
vector3_t xVector3Add(vector3_t L, vector3_t R);
vector3_t xVector3Sub(vector3_t L, vector3_t R);
vector3_t xVector3Scale(vector3_t V, float_t s);
vector3_t xVector3Cross(vector3_t L, vector3_t R);
float_t xVector3Dot(vector3_t L, vector3_t R);
float_t xVector3Modulus(vector3_t v);
vector3_t xVector3Normalize(vector3_t v);
float_t xVector3Angle(vector3_t v1, vector3_t v2);
vector3_t xVector3Inverse(vector3_t v);
float_t xVector3ReciprocalModulus(vector3_t v);

class CVector3 : public vector3_t
{
public:

};


vector3_t operator*( float L, vector3_t& R);
vector3_t operator*(vector3_t& L, float R);

vector3_t& operator+=(vector3_t& L, const vector3_t R);
vector3_t operator+(const vector3_t L, const vector3_t R);
vector3_t& operator-=(vector3_t& L, const vector3_t R);
vector3_t operator-(const vector3_t L, const vector3_t R);
vector3_t& operator*=(vector3_t& L, const vector3_t R);		//cross product of vectors
vector3_t operator*(const vector3_t L, const vector3_t R);	//cross product of vectors
#endif //_UTIL_VECTOR_H_
